//
//  MVVMViewController.m
//  semple-code-oc
//
//  Created by zhaoguoteng on 2022/1/4.
//

#import "MVVMViewController.h"
#import "MMTest01Model.h"
#import "MMTest02Model.h"

@interface MVVMViewController () <UITableViewDelegate, UITableViewDataSource>

@property (nonatomic, strong) UITableView *tableView;
@property (nonatomic, strong) NSMutableArray *dataList;

@end

@implementation MVVMViewController

- (NSMutableArray *)dataList {
    if (!_dataList) {
        _dataList = [NSMutableArray array];
    }
    return _dataList;
}

- (void)viewDidLoad {
    [super viewDidLoad];
    
    [self setupView];
}

- (void)setupView {
    self.title = @"MVVM";
    self.view.backgroundColor = UIColor.whiteColor;
    
    self.tableView = [[UITableView alloc] initWithFrame:self.view.bounds style:UITableViewStyleGrouped];
    self.tableView.delegate = self;
    self.tableView.dataSource = self;
    [self.view addSubview:self.tableView];
    
    [self.tableView registerClass:UITableViewCell.class forCellReuseIdentifier:@"test01"];
    
    for (int i = 0; i < 20; i++) {
        if (i % 2 == 0) {
            MMTest01Model *model = [[MMTest01Model alloc] init];
            [self.dataList addObject:model];
        } else {
            MMTest02Model *model = [[MMTest02Model alloc] init];
            [self.dataList addObject:model];
        }
    }
}

#pragma mark - UITableViewDelegate, UITableViewDataSource

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {
    return self.dataList.count;
}

- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath {
    MVVMModelItem *item = self.dataList[indexPath.row];
    return [item rowHeightInTableView:tableView atIndexPath:indexPath];
}

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
    MVVMModelItem *item = self.dataList[indexPath.row];
    return [item mappingCellInTableView:tableView];
}

@end
